// Bring out your Dead - White Wolf character Management System.
// Copyright (C) 2008 Adam Ness
// 
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

using System;
using System.Collections.Generic;

namespace Boyd.Model
{
	/// <summary>
	/// Description of Character.
	/// </summary>
	public class Character
	{
		private String name;
		private String player;
		private String concept;
		private String virtue;
		private String vice;
		private Game game;
		
		private Attribute intelligence;
		private Attribute wits;
		private Attribute resolve;
		
		private Attribute strength;
		private Attribute dexterity;
		private Attribute stamina;
		
		private Attribute presence;
		private Attribute manipulation;
		private Attribute composure;
		
		private Ability academics;
		private Ability computer;
		private Ability crafts;
		private Ability investigation;
		private Ability medicine;
		private Ability occult;
		private Ability politics;
		private Ability science;
		
		private Ability athletics;
		private Ability brawl;
		private Ability drive;
		private Ability firearms;
		private Ability larceny;
		private Ability stealth;
		private Ability survival;
		private Ability weaponry;
		
		private Ability animalKen;
		private Ability empathy;
		private Ability expression;
		private Ability intimidation;
		private Ability persuasion;
		private Ability socialize;
		private Ability streetwise;
		private Ability subterfuge;
		
		private IList<Merit> merits = new List<Merit>();
	
		public Character( IAbilityFactory abilityFactory)
		{

		intelligence = attributeFactory.CreateAttribute("Intelligence");
		wits = attributeFactory.CreateAttribute("Wits");
		resolve = attributeFactory.CreateAttribute("Resolve");
		
		strength = attributeFactory.CreateAttribute("Strength");
		dexterity = attributeFactory.CreateAttribute("Dexterity");
		stamina = attributeFactory.CreateAttribute("Stamina");
		
		presence = attributeFactory.CreateAttribute("Presence");
		manipulation = attributeFactory.CreateAttribute("Manipulation");
		composure = attributeFactory.CreateAttribute("Composure");
		
			
			academics = abilityFactory.CreateAbility("Academics");
			computer = abilityFactory.CreateAbility("Computer");
			crafts = abilityFactory.CreateAbility("Crafts");
			investigation = abilityFactory.CreateAbility("Investigation");
			medicine = abilityFactory.CreateAbility("Medicine");
			occult = abilityFactory.CreateAbility("Occult");
			politics = abilityFactory.CreateAbility("Politics");
			science = abilityFactory.CreateAbility("Science");
			
			athletics = abilityFactory.CreateAbility("Athletics");
			brawl = abilityFactory.CreateAbility("Brawl");
			drive = abilityFactory.CreateAbility("Drive");
			firearms = abilityFactory.CreateAbility("Firearms");
			larceny = abilityFactory.CreateAbility("Larceny");
			stealth = abilityFactory.CreateAbility("Stealth");
			survival = abilityFactory.CreateAbility("Survival");
			weaponry = abilityFactory.CreateAbility("Weaponry");
			
			animalKen = abilityFactory.CreateAbility("Animal Ken");
			empathy = abilityFactory.CreateAbility("Empathy");
			expression = abilityFactory.CreateAbility("Expression");
			intimidation = abilityFactory.CreateAbility("Intimidation");
			persuasion = abilityFactory.CreateAbility("Persuasion");
			socialize = abilityFactory.CreateAbility("Socialize");
			streetwise = abilityFactory.CreateAbility("Streetwise");
			subterfuge = abilityFactory.CreateAbility("Subterfuge");
		}
		
		
		public string Name {
			get { return name; }
			set { name = value; }
		}
		
		public string Player {
			get { return player; }
			set { player = value; }
		}
		
		public string Concept {
			get { return concept; }
			set { concept = value; }
		}
		
		public string Virtue {
			get { return virtue; }
			set { virtue = value; }
		}
		
		public string Vice {
			get { return vice; }
			set { vice = value; }
		}
		
		public Game Game {
			get { return game; }
			set { game = value; }
		}
		
		public Attribute Intelligence {
			get { return intelligence; }
			set { intelligence = value; }
		}
		
		public Attribute Wits {
			get { return wits; }
			set { wits = value; }
		}
		
		public Attribute Resolve {
			get { return resolve; }
			set { resolve = value; }
		}
		
		public Attribute Strength {
			get { return strength; }
			set { strength = value; }
		}
		
		public Attribute Dexterity {
			get { return dexterity; }
			set { dexterity = value; }
		}
		
		public Attribute Stamina {
			get { return stamina; }
			set { stamina = value; }
		}
		
		public Attribute Presence {
			get { return presence; }
			set { presence = value; }
		}
		
		public Attribute Manipulation {
			get { return manipulation; }
			set { manipulation = value; }
		}
		
		public Attribute Composure {
			get { return composure; }
			set { composure = value; }
		}
		
		public Ability Academics {
			get { return academics; }
			set { academics = value; }
		}
		
		public Ability Computer {
			get { return computer; }
			set { computer = value; }
		}
		
		public Ability Crafts {
			get { return crafts; }
			set { crafts = value; }
		}
		
		public Ability Investigation {
			get { return investigation; }
			set { investigation = value; }
		}
		
		public Ability Medicine {
			get { return medicine; }
			set { medicine = value; }
		}
		
		public Ability Occult {
			get { return occult; }
			set { occult = value; }
		}
		
		public Ability Politics {
			get { return politics; }
			set { politics = value; }
		}
		
		public Ability Science {
			get { return science; }
			set { science = value; }
		}
		
		public Ability Athletics {
			get { return athletics; }
			set { athletics = value; }
		}
		
		public Ability Brawl {
			get { return brawl; }
			set { brawl = value; }
		}
		
		public Ability Drive {
			get { return drive; }
			set { drive = value; }
		}
		
		public Ability Firearms {
			get { return firearms; }
			set { firearms = value; }
		}
		
		public Ability Larceny {
			get { return larceny; }
			set { larceny = value; }
		}
		
		public Ability Stealth {
			get { return stealth; }
			set { stealth = value; }
		}
		
		public Ability Survival {
			get { return survival; }
			set { survival = value; }
		}
		
		public Ability Weaponry {
			get { return weaponry; }
			set { weaponry = value; }
		}
		
		public Ability AnimalKen {
			get { return animalKen; }
			set { animalKen = value; }
		}
		
		public Ability Empathy {
			get { return empathy; }
			set { empathy = value; }
		}
		
		public Ability Expression {
			get { return expression; }
			set { expression = value; }
		}
		
		public Ability Intimidation {
			get { return intimidation; }
			set { intimidation = value; }
		}
		
		public Ability Persuasion {
			get { return persuasion; }
			set { persuasion = value; }
		}
		
		public Ability Socialize {
			get { return socialize; }
			set { socialize = value; }
		}
		
		public Ability Streetwise {
			get { return streetwise; }
			set { streetwise = value; }
		}
		
		public Ability Subterfuge {
			get { return subterfuge; }
			set { subterfuge = value; }
		}
		
		public IList<Merit> Merits {
			get { return merits; }
		}
		
		
	}
}
